//导入共享数据包
import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'

Page({
    //共享数据相关配置
    options: {
        styleIsolation: 'shared'
    },
    
    behaviors: [storeBindingsBehavior],

    //引入需要的共享数据
    storeBindings: {
        store,
        fields: {
            token: 'token',
            userInfo: 'userInfo'
        },
        actions: {
            updateToken: 'updateToken',
            updateUserInfo: 'updateUserInfo',
            updateUserName: 'updateUserName',
            updateUserAvatar: 'updateUserAvatar'
        }
    },

    data: {
      defaultAvatarUrl : 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
      userName: '微信用户',
      avatarUrl: null,
      openid: '',
      isLogin: false
    },
  
    onLoad() {
      
    },
  
    // 微信授权登录
    onLoginTap() {
      wx.showLoading({ title: '登录中' });
  
      wx.login({
        success: (res) => {
          if (!res.code) {
            wx.hideLoading();
            wx.showToast({ title: '登录失败', icon: 'none' });
            return;
          }
  
          // 发送 code 到后端
          wx.request({
            url: 'http://localhost:8980/user/wxLogin',
            method: 'POST',
            header: {
              'content-type': 'application/json'
            },
            data: {
              code: res.code
            },
            success: (res) => {
                console.log(res)
  
              if (res.data.code) {
                // 登录成功，保存 token 和用户信息
                this.setData({
                    userName: res.data.data.userName,
                    avatarUrl: res.data.data.avatarUrl,
                    isLogin: true
                })
                this.updateUserInfo(res.data.data)
                this.updateToken(res.data.data.token)
                console.log(store)                        
                wx.showToast({ title: '登录成功' });
              } else {
                wx.showToast({ title: '登录失败', icon: 'none' });
              }
            },
            fail: () => {
              wx.showToast({ title: '网络异常', icon: 'none' });
            },
            complete: () => {
              wx.hideLoading();
            }
          });
        },
        fail: () => {
          wx.hideLoading();
          wx.showToast({ title: '微信登录失败', icon: 'none' });
        }
      });
    },
  
    // 修改用户信息（预留）
    onEditUserInfo() {
      const that = this;
    
      // 构造请求参数
      const userData = {
        id: store.userInfo.id,
        userName: this.data.userName,
        avatarUrl: store.userInfo.avatarUrl
      };
    
      wx.showLoading({ title: '保存中' });
    
      wx.request({
        url: 'http://localhost:8980/user/changeUserInfo',
        method: 'POST',
        header: {
          'content-type': 'application/json',
          authentication: store.token
        },
        data: userData,
        success(res) {
          if (res.data.code === 1) {
            wx.showToast({ title: '保存成功' });
    
            // 可选：更新全局 store 中的用户信息
            that.updateUserName(userData.userName);
            that.updateUserAvatar(userData.avatarUrl);
    
          } else {
            wx.showToast({ title: '保存失败', icon: 'none' });
            console.error('修改用户信息失败:', res.data.msg || res.errMsg);
          }
        },
        fail(err) {
          wx.showToast({ title: '网络异常', icon: 'none' });
          console.error('请求失败:', err);
        },
        complete() {
          wx.hideLoading();
        }
      });
    },
    
    // 获取用户信息（兼容旧版）
    getUserProfile(e) {
      wx.getUserProfile({
        desc: '用于完善用户资料',
        success: (res) => {
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          });
        }
      });
    },
    
    // 获取用户头像（新版）
    onChooseAvatar(e) {
        //判断用户是否登录
        if(!store.token) {
            wx.showToast({
                title: '用户未登录！',
                icon: 'error'
              })
            return
        }
    
      const { avatarUrl } = e.detail;
      this.setData({
          avatarUrl: e.detail
      });
      // 调用上传方法
      this.uploadAvatarToServer(avatarUrl);
    },
    
    uploadAvatarToServer(tempFilePath) {
        const that = this;
      
        wx.uploadFile({
          url: 'http://localhost:8980/file/upload-image',
          filePath: tempFilePath,
          name: 'file', // 和后端接收字段一致
          header: {
            authentication: store.token
          },
          success(uploadRes) {
            try {
              const response = JSON.parse(uploadRes.data);
    
              if (response.url) {
                const newAvatarUrl = response.url;
      
                // 更新页面数据
                that.setData({
                  avatarUrl: newAvatarUrl
                });
      
                // 更新全局 store
                that.updateUserAvatar(newAvatarUrl);
      
                wx.showToast({ title: '头像上传成功' });
              } else {
                wx.showToast({ title: '上传失败', icon: 'none' });
              }
            } catch (e) {
              console.error('解析响应失败:', e);
              wx.showToast({ title: '解析响应失败', icon: 'none' });
            }
          },
          fail(err) {
            console.error('上传失败:', err);
            wx.showToast({ title: '上传失败', icon: 'none' });
          }
        });
      },
    
    // 输入昵称
    onInputChange(e) {
      this.setData({
        userName : e.detail.value
      });
    },

    // 新增方法：跳转到历史记录页面
    navigateToHistory() {
      wx.navigateTo({
        url: '/pages/history/history'
      });
    }
});